package com.doit.day06

object _01_函数的高阶 {
  def main(args: Array[String]): Unit = {
    val f = (a:Int,b:Int)=>{a+b*10}
    //res的结果 a+100,10   a+b*10   返回一个10
    val res = add(f,10)//要传什么东西进去，得到的结果是个什么类型，结果的值是什么？
    println(res)  //

    val f1: String => Int = (a:String) => a.toInt + 10

    val f2 = (a:Int) => a*10

    val res1: Int = 逗你们玩(f1, f2, "18")
    println(res1)

    val fun3: Double => Double = fun1(100)
    val d: Double = fun3(0.8)
    val d1: Double = fun3(0.6)

    //科里化
    fun1(100)(0.8)




    val res3: Double = fun2(100, 0.8)
    val res4: Double = fun2(100, 0.6)

  }

  def add(f:(Int,Int)=>Int,b:Int)={
    f(b,b)
  }


  def 逗你们玩(f:(String)=>Int,f1:(Int)=>Int,str:String)={
//    f1(f(str))//
    val i: Int = f(str)
    val i1: Int = f1(i)
    i1
  }


  /**
   * 有一个商品，价格==》 售价
   * 在不同的节假日，我们商品打折的折扣不一样  实际售价 = 售价 * 折扣
   */

  def fun1(c:Int) ={
        //很多的逻辑
    (a:Double)=>{a*c}
  }

  def fun2(a:Int,c:Double) ={
    //很多的逻辑
    a*c
  }




}


